可迭代对象 -> 可以进行循环的对象 -> str list 等等 数字不是

索引、切片、步长 和 str 的方法一样

1. 增

  • .append() -> 将对象添加到列表的最后面

arr = ['Kevin', 'Amy', 'Tom', 'Eric']
arr.append('Yeung')

  • .insert(index,obj) -> index: 想要添加到位置的下标 obj: 添加的内容 ->将对象添加到指定的位置
arr = ['Kevin', 'Amy', 'Tom', 'Eric']
arr.insert(2, '指定的位置') # ['Kevin', 'Amy', '指定的位置', 'Tom', 'Eric']

  • .extend(可迭代对象) -> 迭代添加(循环添加)

arr = ['Kevin', 'Amy']
arr.extend('一二') # ['Kevin', 'Amy', '一', '二']
arr.extend(['Eric', 'Tom']) # ['Kevin', 'Amy', 'Eric', 'Tom']

2. 删

  • .pop(index) -> index: 要删除对象的下标 不传默认删除最后一个 -> 返回值: 被删除的对象

arr = ['Kevin', 'Amy', 'Eric', 'Tom']
arr.pop() # ['Kevin', 'Amy', 'Eric']
arr.pop(1) # ['Kevin', 'Eric', 'Tom']
popObj = arr.pop(1) # pop返回值: Amy

  • .remove(obj) -> obj: 要要删除的元素,如果有相同的元素只会删除第一个 -> 返回值: None 相当于没有 

arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr.remove('Kevin') # ['Amy', 'Kevin', 'Eric', 'Tom']

  • .clear() -> 清空列表

arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr.clear() # []

  • del list[start:end] -> 切片删除

arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
del arr[1:4] # ['Amy', 'Tom']

  • del list -> 彻底从内存中删除该数组

arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
del arr

3. 改

  • 普通修改

arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr[0] = '修改' # ['修改', 'Kevin', 'Kevin', 'Eric', 'Tom']

  • list[start:end] = 可迭代对象 -> 切片修改

arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr[1:3] = '修改' # ['Amy', '修', '改', 'Eric', 'Tom']
arr[1:3] = ['修改1', '修改2'] # ['Amy', '修改1', '修改2', 'Eric', 'Tom']

4. 排序

  • .sort() -> 正序

arr = [2, 1, 5, 6, 4]
arr.sort() # [1, 2, 4, 5, 6]

  • .sort(reverse=True) -> 倒序

arr = [2, 1, 5, 6, 4]
arr.sort(reverse=True) # [6, 5, 4, 2, 1]

  • .sort(key=fn) -> key = 函数名/匿名函数 -> 如果有 key 那么就会通过 key 的函数返回值进行排序

# 按照绝对值排序

lis = [2, 5, -3, 4, -9, 1]
lis.sort(key=abs)
print(lis)

# 按照长度排序

lis = ['1', '    ', '23', '12313123', '444']
lis.sort(key=len)  # ['1', '23', '444', '    ', '12313123']

  • .reverse() -> 列表反转

arr = [2, 1, 5, 6, 4]
arr.reverse() # [4, 6, 5, 1, 2]

5. 合并列表

  • 合并列表相当于 js 中的 concat

  • 列表相加 -> 返回值: 列表

lis1 = [1, 2, 3]
lis2 = [2, 3, 4]
lis3 = lis1 + lis2  # [1, 2, 3, 2, 3, 4]

  • chain -> 返回值: 可迭代对象

from itertools import chain

lis1 = [1, 2, 3]
lis2 = [2, 3, 4]

list3 = chain(lis1, lis2)  # <itertools.chain object at 0x000001C1B517FBE0>

for num in list3:
    print(num)

6. 其他方法

  • max(list, key=fn) -> 返回列表最大值 -> key = 函数名/匿名函数 -> 如果有 key 那么就会获取 key 的函数返回值中的最大值

arr = [1, 2, 3, -4]
print(max(arr))  # 3

# 按照绝对值获取最大值

arr = [1, 2, 3, -4]
print(max(arr, key=abs))  # 4

  • min(list, key=fn) -> 返回列表最小值 -> key = 函数名/匿名函数 -> 如果有 key 那么就会获取 key 的函数返回值中的最小值

arr = [1, 2, 3, -4]
print(min(arr))  # -4

# 按照绝对值获取最小值

arr = [1, 2, 3, -4]
print(min(arr, key=abs))  # 1

  • range(startNum,endNum) ->  创建一个整数列表,一般用在 for 循环中 -> 直接打印是不会返回列表只会返回 range(10, 35)(迭代器) -> 当 startNum 缺省时,默认为 0,即 range(,10) 相当于 range(0,10)-> 每进行一次循环就开始创建一个数字返回给你,不会一开始就将全部数字创建出来,这样可以节省内存
arr = range(10, 35)

print(arr) # 结果 range(10, 35) -> 用作循环

for i in arr:
    print(i) # 打印出来的是 10 - 34

for i in range(0, 10):
    print(i) # 打印出来的是 0 - 9

for i in range(10):
print(i)打印出来的是 0 - 9

for i in range(1,10,2):  # 步长
    print(i)

for i in range(10,1,-2): # 反向步长
    print(i)

7. 公共方法

  • len(xxx) -> 获取长度

arr = [2, 1, 5, 6, 4]
arr_len = len(arr) # 5

  • .count(xxx) -> 统计对象出现的次数

arr = ['Amy', 'Kevin', 'Kevin', 'Eric', 'Tom']
arr_count = arr.count('Kevin') # 2

  • .index(xxx) -> 获取对象的下标 -> 获取不到则报错

arr = ['Amy', 'Kevin', 'Eric', 'Tom']
arr_index = arr.index('Kevin') # 1

  • 列表没有提供 .find() 的方法

  • 'xxx'.join(list) -> 列表转化为字符串 -> 注意: 使用该办法的时候列表里面不能有纯数字不然会报错,因为数字不能与字符串相加

arr = ['Amy', 'Kevin', 'Eric', 'Tom']
arr_join = '~'.join(arr) # Amy~Kevin~Eric~Tom

8. 小练习

  • 循环添加数据进列表

while 1:
    username = input('>>>')
    arr.append(username)
    if username.upper() == 'Q':
        break

  • 打印列表中的元素遇见嵌套列表直接打印里面的值

li = [1, 2, 3, 5, 'alex', [2, 3, 4, 5, 'taibai'], 'afds']

for i in li:
    if type(i) == list:
        for j in i:
            print(j)
    else:
        print(i)